-- $LastChangedDate: 2007-06-01 02:52:33 +0200 (Fri, 01 Jun 2007) $
-- $LastChangedRevision: 149 $
-- $LastChangedBy: vicente $

-- packages de ada

SEPARATE (Tareas.Gmedicos)

   -- Atiende a un cliente que ha tenido una medicion muy_alta o muy_baja
   -- Con cierta probabilidad el cliente se recuperara, en otros casos dada la gravedad
   -- se le recomendara que se vaya a casa, y en la peor de las situaciones el cliente
   -- fallecera.
   -- El resultado se devuelve mediante el parametro res.

FUNCTION Consulta_Cliente (
      Cliente : IN     Datosclienteptr;
      G       : IN     Generator)
  RETURN Resultadosconsulta IS

   -- probabilidad
   P : Integer;

   TYPE Tipointervalos IS ARRAY (Tipoedad, Resultadosconsulta) OF Integer;

   -- definicion de los intervalos para conocer el resultado de la consulta
   Intervalos : CONSTANT Tipointervalos := ((88, 95, 100), (80, 93, 100), (70, 90, 100));

BEGIN
   -- obtener una muestra del generador
   -- y pasarla a su correspondiente %
   P:= Integer(Random(G)*100.0);

   IF P IN 0 .. Intervalos(Cliente.Edad, Recuperado) - 1 THEN
      RETURN Recuperado;
   END IF;

   IF P IN Intervalos(Cliente.Edad, Recuperado) .. Intervalos(Cliente.Edad, Nomasejercicio) - 1 THEN
      RETURN Nomasejercicio;
   END IF;

   RETURN Fallecido;

END Consulta_Cliente;
